// axios 二次封装
import axios from 'axios'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { storageUtils } from '../utils/storageUtils'

// 创建一个新的axios实例
const instance = axios.create({
    baseURL: 'http://localhost:2333/admin',
    timeout: 20000
})

// 添加请求拦截器
instance.interceptors.request.use((config) => {
    NProgress.start()
    // 在发送请求之前做些什么
    if (storageUtils.getToken()) {
        config.headers['token'] = storageUtils.getToken()
    }
    return config
})

// 添加响应拦截器
instance.interceptors.response.use(
    (response) => {
        NProgress.done()
        // 对响应数据做点什么
        return response.data
    },
    (error) => {
        NProgress.done()
        const { status } = error.response
        if (status === 401) {
            storageUtils.removeToken()
            storageUtils.removeUser()
            window.location.href = '/login.html'
        } else {
            alert(error.message)
        }
        return Promise.reject(error)
    }
)

// 暴露
export default instance
